package com.zjxf.utils;

import com.alibaba.fastjson.JSONObject;
import com.zjxf.base.bean.sort.SortDto;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;

/**
 * Created with IntelliJ IDEA.
 * author: create by ZhangHao
 * Date: 2019/8/26
 * Time: 14:18
 */
public class PageUtils {

    /**
     * 构建PageRequest
     *
     * @param page 起始页
     * @param size 页数
     * @param sort 排序
     * @return PageRequest
     */
    public static PageRequest buildPageRequest(int page, int size, Sort sort) {
        return PageRequest.of(page, size, sort);
    }

    /**
     * 构建PageRequest(默认创建时间排序)
     *
     * @param page 起始页
     * @param size 页数
     * @return PageRequest
     */
    public static PageRequest buildPageRequest(int page, int size) {
        return PageRequest.of(page, size, new Sort(Sort.Direction.DESC, "createTime"));
    }

    /**
     * 自定义排序方式
     *
     * @param page    起始页
     * @param size    页数
     * @param sortDto 自定义排序实体
     * @return PageRequest
     */
    public static PageRequest buildPageRequest(int page, int size, SortDto sortDto) {
        return PageRequest.of(page, size, new Sort(sortDto.getOrderType(), sortDto.getOrderField()));
    }

    public static <T> JSONObject page(Page<T> page, Object data) {
        JSONObject jsonData = new JSONObject();
        jsonData.put("pageNumber", page.getNumber() + 1);
        jsonData.put("pageSize", page.getSize());
        jsonData.put("total", page.getTotalElements());
        jsonData.put("totalPage", page.getTotalPages());
        jsonData.put("rows", data);
        return jsonData;
    }
}
